#pragma once
#include "IGameState.h"
#include "../SGD Wrappers/SGD_GraphicsManager.h"
#include "../SGD Wrappers/SGD_Message.h"
#include "../SGD Wrappers/SGD_MessageManager.h"
#include "../SGD Wrappers/SGD_EventManager.h"

class ObjectManager;
class Camera;
class Player;

class TutorialState : public IGameState
{
public:

	static TutorialState* GetInstance();

	void	Enter();
	void	Exit();
	void	Update(float dt);
	void	Render();
	bool	Input();

private:

	TutorialState() = default;
	~TutorialState() = default;

	TutorialState(const TutorialState&) = delete;
	TutorialState operator = (const TutorialState&) = delete;

	SGD::EventManager*		m_pEvents = nullptr;
	SGD::MessageManager*	m_pMessages = nullptr;

	// Message Callback Function:
	static void MessageProc(const SGD::Message* pMsg);
	
	Player*					m_pPlayer;
	SGD::GraphicsManager*	m_pGraphics;
	ObjectManager*			m_pObjects;
	Camera*					m_pCamera;
};